﻿using System.Collections.Generic;
using Neturion.Dados;
using Neturion.IRepositorios;
using Neturion.Repositorios;
using Neturion.Utils;

namespace Neturion.Negocios
{
    /// <summary>
    /// 
    /// </summary>
    public class NegocioEndereco
    {
        private IRepositorioEndereco _repositorioEndereco;

        /// <summary>
        /// 
        /// </summary>
        public NegocioEndereco()
        {
            _repositorioEndereco = new RepositorioEndereco();
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="endereco"></param>
        /// <returns></returns>
        public Endereco Inserir(Endereco endereco)
        {
            endereco.Codigo = GeradorCodigo.GerarCodigo(1);
            endereco.Codigo += (_repositorioEndereco.ObterUltimoIdCodigoInteiro() + 1).ToString();
            endereco.Codigo += GeradorCodigo.GerarCodigo(1, endereco.Codigo);
            return _repositorioEndereco.Inserir(endereco);
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="endereco"></param>
        /// <returns></returns>
        public Endereco Atualizar(Endereco endereco)
        {
            return _repositorioEndereco.Atualizar(endereco);
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="endereco"></param>
        public void Excluir(Endereco endereco)
        {
            Endereco enderecoTmp = ObterPorId(endereco.EnderecoId);
            _repositorioEndereco.Excluir(enderecoTmp);
        }

        /// <summary>
        /// 
        /// </summary>
        /// <returns></returns>
        public IList<Endereco> ObterTodos()
        {
            return _repositorioEndereco.ObterTodos();
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public Endereco ObterPorId(int id)
        {
            return _repositorioEndereco.ObterPorId(id);
        }

        public Endereco ObterPorCodigo(string codigo)
        {
            return _repositorioEndereco.ObterPorCodigo(codigo);
        }

        public IList<Endereco> ObterPorPessoa(Pessoa pessoa)
        {
            return _repositorioEndereco.ObterPorPessoa(pessoa);
        }
    }
}